home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Mail / pine3.92 / contrib / utils / ansiprt.c next >
C/C++ Source or Header  |  1995-09-12  |  1KB  |  61 lines

  1. /*
  2.  * ansiprt.c
  3.  *
  4.  * Simple filter to wrap ANSI media copy escape sequences around 
  5.  * text on stdin.  Writes /dev/tty to get around things that might be
  6.  * trapping stdout.  This is actually a feature because it was written
  7.  * to be used with pine's personal print option set up to take "enscript"
  8.  * output and send it displayward to be captured/printed to a postscript 
  9.  * device.  Pine, of course, uses popen() to invoke the personal print
  10.  * command, and interprets stdout as diagnostic messages from the command.
  11.  *
  12.  * Michael Seibel, mikes@cac.washington.edu
  13.  *
  14.  * 21 Apr 92
  15.  *
  16.  */
  17. #include <stdio.h>
  18. #include <sys/file.h>
  19.  
  20. #define    BUFSIZ    8192
  21.  
  22. main(argc, argv)
  23. int  argc;
  24. char **argv;
  25. {
  26.     char c[BUFSIZ];
  27.     int  n, d;
  28.     int  ctrld = 0;
  29.  
  30.     if(argc > 1){
  31.         n = 0;
  32.     while(argc > ++n){
  33.         if(argv[n][0] == '-'){
  34.         switch(argv[n][1]){
  35.           case 'd':
  36.             ctrld++;
  37.             break;
  38.           default :
  39.             fprintf(stderr,"unknown option: %c\n", argv[n][1]);
  40.             break;
  41.         }
  42.         }
  43.         }
  44.     }
  45.  
  46.     if((d=open("/dev/tty",O_WRONLY)) < 0){
  47.         perror("/dev/tty");
  48.     exit(1);
  49.     }
  50.  
  51.     write(d,"\033[5i", 4);
  52.     while((n=read(0, c, BUFSIZ)) > 0)
  53.     write(d, c, n);
  54.  
  55.     if(ctrld)
  56.     write(d, "\004", 1);
  57.  
  58.     write(d,"\033[4i", 4);
  59.     close(d);
  60. }
  61.